package com.liqw.core;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

/**
 * WebDriver管理类（负责Driver的创建、配置与销毁）
 */
public class DriverManager {
    private WebDriver driver;

    /**
     * 初始化WebDriver（配置Chrome选项）
     */
    public void initDriver() {
//        // 设置驱动路径
        System.setProperty("webdriver.chrome.driver", Config.CHROME_DRIVER_PATH);

        // 配置Chrome选项
        ChromeOptions options = new ChromeOptions();
        options.setPageLoadStrategy(org.openqa.selenium.PageLoadStrategy.NORMAL); // 等待页面完全加载
        options.addArguments("--start-maximized"); // 最大化窗口
        options.addArguments("--disable-notifications"); // 禁用通知
        
        // 添加允许自动播放的配置
        options.addArguments("--autoplay-policy=no-user-gesture-required"); // 允许无需用户交互即可自动播放
        options.addArguments("--mute-audio"); // 静音播放，增加自动播放成功率
        options.addArguments("--disable-features=PreloadMediaEngagementData,MediaEngagementBypassAutoplayPolicies"); // 禁用媒体参与度策略
        
        // 在initDriver方法中添加以下配置以优化多标签页性能
        options.addArguments("--disable-gpu");
        options.addArguments("--disable-extensions");
        options.addArguments("--disable-dev-shm-usage"); // 解决内存问题
        options.addArguments("--window-size=1920,1080"); // 设置合适的窗口大小
        options.addArguments("--remote-allow-origins=*"); // 允许跨域访问
        
        // 初始化Driver
        this.driver = new ChromeDriver(options);
    }

    /**
     * 获取WebDriver实例（确保已初始化）
     */
    public WebDriver getDriver() {
        if (driver == null) {
            throw new IllegalStateException("WebDriver未初始化，请先调用initDriver()");
        }
        return driver;
    }

    /**
     * 销毁WebDriver（释放资源）
     */
    public void quitDriver() {
        if (driver != null) {
            try {
                driver.quit();
            } catch (Exception e) {
                // 忽略关闭时的异常
            }
            driver = null;
        }
    }
}